home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.misc
- X-UNIX-From: dvadura@watdragon.waterloo.edu
- subject: v15i090: dmake version 3.6 patch 1 (part 01/5)
- from: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
-
- Posting-number: Volume 15, Issue 90
- Submitted-by: Dennis Vadura <dvadura@watdragon.waterloo.edu>
- Archive-name: dmake-3.6/patch01
-
- #!/bin/sh
- # shar: Shell Archiver (v1.22)
- #
- # This is part 1 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- #
- # Run the following text with /bin/sh to create:
- # dm36.p1
- #
- if test -r s2_seq_.tmp
- then echo "Must unpack archives in sequence!"
- next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
- exit 1; fi
- sed 's/^X//' << 'SHAR_EOF' > dm36.p1 &&
- X#!/bin/sh
- X# dodiff: Directory tree maintainer (v1.1)
- X#
- X# DMAKE Version 3.6, patch #1
- X# ---------------------------
- X#
- X# Severity: Medium
- X#
- X# Nature: Minor teething problems with UNIX, and major problems with MSC
- X# 6.0, and TCC 2.0 swapping versions fixed.
- X#
- X# Format: Shar containing new versions of affected files. With appropriate
- X# patches. (run the patch file through sh in the source distribution
- X# directory and it will do the rest)
- X#
- X# Also available as pub/src/dmake-3.6-patch1 on watmsg.uwaterloo.edu
- X# (129.97.129.9)
- X#
- X# Archived source on watmsg incorporates this patch.
- X#
- X# Prerequisites: dmake version 3.6, patchlevel 1 source distribution
- X#
- X#
- X# Description of Fixes:
- X# ---------------------
- X# 1. Compilation problems with Microsoft compilers, and swapping versions of
- X# dmake. To the best of my knowledge versions 4.0, 5.0, 5.1 and 6.0 of MSC
- X# now fully compile and generate running binaries both for swapping and non
- X# swapping versions of dmake.
- X#
- X# 2. Other fixes include a hack to allow parsing of makefiles shipped over from
- X# DOS that contain cr-lf combinations. This doesn't seem to impact processing
- X# of normal UNIX makefiles at all.
- X#
- X# 3. Changed DOS versions of tempnam.c to use _psp to generate temporary file
- X# names instead of the current time as supplied by time(). The reason for
- X# this is too bizzare to go into here.
- X#
- X# 4. Xenix is now a supported make target, as is Atari-ST TOS using GCC.
- X#
- X# 5. A number of small tweaks here and there, not serious but might make
- X# compiles on a number of systems cleaner.
- X#
- X# 6. Clarification of the documentation in several spots.
- X#
- X# 7. Patch to dmake.tf to remove ^G control characters. NOTE: This patch
- X# may fail if you never received the ^G characters in the first place. If
- X# so then please apply the patch by hand.
- X#
- X# 8. inferred targets that infer recipes from rules having a .SETDIR attribute
- X# now have the .SETDIR applied prior to making the prerequisites and the
- X# target.
- X#
- X# Many thanks to all those that helped find and identify and in some cases
- X# provided fixes and/or new code for the above enhancements.
- X#
- X# -dennis
- X#
- X# Remove Obsolete files from distribution
- Xrm -f msdos/mscdos/obj60swp.rsp
- Xrm -f msdos/mscdos/obj60.rsp
- Xrm -f msdos/mscdos/mkswp.bat
- Xrm -f msdos/mscdos/mk.bat
- Xrm -f msdos/mscdos/lib60swp.rsp
- Xrm -f msdos/mscdos/lib60.rsp
- X
- X# Now use a shar archive to add any new files to the distribution
- X# shar: Shell Archiver (v1.22)
- X#
- X# Run the following text with /bin/sh to create:
- X# msdos/mscdos/mk40.bat
- X# msdos/mscdos/mk40swp.bat
- X# msdos/mscdos/mk50.bat
- X# msdos/mscdos/mk50swp.bat
- X# msdos/mscdos/mk51.bat
- X# msdos/mscdos/mk51swp.bat
- X# msdos/mscdos/optoff.h
- X# readme/atari.tos
- X# readme/patch1
- X# tos
- X# tos/arlib.c
- X# tos/config.h
- X# tos/config.mk
- X# tos/dirbrk.c
- X# tos/make.sh
- X# tos/rmprq.c
- X# tos/ruletab.c
- X# tos/runargv.c
- X# tos/startup.h
- X# tos/startup.mk
- X# tos/sysintf.h
- X#
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk40.bat &&
- XXmkdir objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk40.bat || echo "restore of msdos/mscdos/mk40.bat fails"
- Xset `wc -c msdos/mscdos/mk40.bat`;Sum=$1
- Xif test "$Sum" != "3127"
- Xthen echo original size 3127, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk40swp.bat &&
- XXmkdir objects
- XXmasm -t -mx -Dmcompact msdos\exec.asm;
- XXmv exec.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\find.c
- XXmv find.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\spawn.c
- XXmv spawn.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -mC -DM_I86=1 -D__STDC__=1 msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk40swp.bat || echo "restore of msdos/mscdos/mk40swp.bat fails"
- Xset `wc -c msdos/mscdos/mk40swp.bat`;Sum=$1
- Xif test "$Sum" != "3411"
- Xthen echo original size 3411, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk50.bat &&
- XXmkdir objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk50.bat || echo "restore of msdos/mscdos/mk50.bat fails"
- Xset `wc -c msdos/mscdos/mk50.bat`;Sum=$1
- Xif test "$Sum" != "3155"
- Xthen echo original size 3155, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk50swp.bat &&
- XXmkdir objects
- XXmasm -t -mx -Dmcompact msdos\exec.asm;
- XXmv exec.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\find.c
- XXmv find.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\spawn.c
- XXmv spawn.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=500 -Oscl -Gs msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk50swp.bat || echo "restore of msdos/mscdos/mk50swp.bat fails"
- Xset `wc -c msdos/mscdos/mk50swp.bat`;Sum=$1
- Xif test "$Sum" != "3441"
- Xthen echo original size 3441, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk51.bat &&
- XXmkdir objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\obj.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk51.bat || echo "restore of msdos/mscdos/mk51.bat fails"
- Xset `wc -c msdos/mscdos/mk51.bat`;Sum=$1
- Xif test "$Sum" != "3155"
- Xthen echo original size 3155, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/mk51swp.bat &&
- XXmkdir objects
- XXmasm -t -mx -Dmcompact msdos\exec.asm;
- XXmv exec.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs infer.c
- XXmv infer.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs make.c
- XXmv make.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs stat.c
- XXmv stat.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs expand.c
- XXmv expand.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs string.c
- XXmv string.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs hash.c
- XXmv hash.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dag.c
- XXmv dag.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dmake.c
- XXmv dmake.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs path.c
- XXmv path.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs imacs.c
- XXmv imacs.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs sysintf.c
- XXmv sysintf.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs parse.c
- XXmv parse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs getinp.c
- XXmv getinp.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs quit.c
- XXmv quit.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs basename.c
- XXmv basename.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs dump.c
- XXmv dump.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs macparse.c
- XXmv macparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs rulparse.c
- XXmv rulparse.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs percent.c
- XXmv percent.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs function.c
- XXmv function.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\ruletab.c
- XXmv ruletab.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\dirbrk.c
- XXmv dirbrk.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\runargv.c
- XXmv runargv.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\arlib.c
- XXmv arlib.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\_chdir.c
- XXmv _chdir.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\switchar.c
- XXmv switchar.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\rmprq.c
- XXmv rmprq.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\find.c
- XXmv find.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\spawn.c
- XXmv spawn.obj objects
- XXcl -c -DHELP -I. -Icommon -Imsdos -Imsdos\mscdos -AC -D_MSC_VER=510 -Oscl -Gs msdos\mscdos\tempnam.c
- XXmv tempnam.obj objects
- XXlink @msdos\mscdos\objswp.rsp,dmake.exe,NUL.MAP;
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/mk51swp.bat || echo "restore of msdos/mscdos/mk51swp.bat fails"
- Xset `wc -c msdos/mscdos/mk51swp.bat`;Sum=$1
- Xif test "$Sum" != "3441"
- Xthen echo original size 3441, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > msdos/mscdos/optoff.h &&
- XX#if _MSC_VER < 600
- XX# pragma loop_opt(off)
- XX#endif
- XSHAR_EOF
- Xchmod 0640 msdos/mscdos/optoff.h || echo "restore of msdos/mscdos/optoff.h fails"
- Xset `wc -c msdos/mscdos/optoff.h`;Sum=$1
- Xif test "$Sum" != "49"
- Xthen echo original size 49, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > readme/atari.tos &&
- XXThis file describes the Atari-tos distribution of dmake.
- XX
- XXThe code to compile on an Atari-ST using GCC was supplied by Edgar Roeder
- XX(roeder@cs.uni-sb.de). I do not have an ST to verify the distribution sources
- XXon but I have no reason to believe them to not work. If there are any
- XXproblems please let Edgar or myself know.
- XX
- XXI know of no bugs or limitation to the the Atari-ST implementation. Note that
- XXit is similar to the DOS version but it does not swap itself out. This does
- XXnot appear to be as much of a problem on the Atari as it is on MSDOS boxes.
- XX
- XX-dennis
- XSHAR_EOF
- Xchmod 0640 readme/atari.tos || echo "restore of readme/atari.tos fails"
- Xset `wc -c readme/atari.tos`;Sum=$1
- Xif test "$Sum" != "566"
- Xthen echo original size 566, current size $Sum;fi
- Xsed 's/^X//' << 'SHAR_EOF' > readme/patch1 &&
- XXDMAKE Version 3.6, patch #1
- XX---------------------------
- XX
- XXSeverity: Medium
- XX
- XXNature: Minor teething problems with UNIX, and major problems with MSC
- XX 6.0, and TCC 2.0 swapping versions fixed.
- XX
- XXFormat: Shar containing new versions of affected files. With appropriate
- XX patches. (run the patch file through sh in the source distribution
- XX directory and it will do the rest)
- XX
- XX Also available as pub/src/dmake-3.6-patch1 on watmsg.uwaterloo.edu
- XX (129.97.129.9)
- XX
- XX Archived source on watmsg incorporates this patch.
- XX
- XXPrerequisites: dmake version 3.6, patchlevel 1 source distribution
- XX
- XX
- XXDescription of Fixes:
- XX---------------------
- XX1. Compilation problems with Microsoft compilers, and swapping versions of
- XX dmake. To the best of my knowledge versions 4.0, 5.0, 5.1 and 6.0 of MSC
- XX now fully compile and generate running binaries both for swapping and non
- XX swapping versions of dmake.
- XX
- XX2. Other fixes include a hack to allow parsing of makefiles shipped over from
- XX DOS that contain cr-lf combinations. This doesn't seem to impact processing
- XX of normal UNIX makefiles at all.
- XX
- XX3. Changed DOS versions of tempnam.c to use _psp to generate temporary file
- XX names instead of the current time as supplied by time(). The reason for
- XX this is too bizzare to go into here.
- XX
- XX4. Xenix is now a supported make target, as is Atari-ST TOS using GCC.
- XX
- XX5. A number of small tweaks here and there, not serious but might make
- XX compiles on a number of systems cleaner.
- XX
- XX6. Clarification of the documentation in several spots.
- XX
- XX7. Patch to dmake.tf to remove ^G control characters. NOTE: This patch
- XX may fail if you never received the ^G characters in the first place. If
- XX so then please apply the patch by hand.
- XX
- XX8. inferred targets that infer recipes from rules having a .SETDIR attribute
- XX now have the .SETDIR applied prior to making the prerequisites and the
- XX target.
- XX
- XXMany thanks to all those that helped find and identify and in some cases
- XXprovided fixes and/or new code for the above enhancements.
- XX
- XX-dennis
- XSHAR_EOF
- Xchmod 0640 readme/patch1 || echo "restore of readme/patch1 fails"
- Xset `wc -c readme/patch1`;Sum=$1
- Xif test "$Sum" != "2063"
- Xthen echo original size 2063, current size $Sum;fi
- Xecho mkdir - tos
- Xmkdir tos
- Xsed 's/^X//' << 'SHAR_EOF' > tos/arlib.c &&
- XX/* RCS -- $Header: /u2/dvadura/src/generic/dmake/src/unix/RCS/arlib.c,v 1.1 90/10/06 12:06:53 dvadura Exp $
- XX-- SYNOPSIS -- Unix archive manipulation code.
- XX--
- XX-- DESCRIPTION
- XX-- Originally this code was provided by Eric Gisin of MKS. I took
- XX-- his code and completely rewrote it adding cacheing of lib members
- XX-- and other various optimizations. I kept the overal functional
- XX-- idea of the library routines as they are similar to those in GNU
- XX-- make and felt it advantageous to maintain a similar interface.
- XX--
- XX-- AUTHOR
- XX-- Dennis Vadura, dvadura@watdragon.uwaterloo.ca
- XX-- CS DEPT, University of Waterloo, Waterloo, Ont., Canada
- XX--
- XX-- COPYRIGHT
- XX-- Copyright (c) 1990 by Dennis Vadura. All rights reserved.
- XX--
- XX-- This program is free software; you can redistribute it and/or
- XX-- modify it under the terms of the GNU General Public License
- XX-- (version 1), as published by the Free Software Foundation, and
- XX-- found in the file 'LICENSE' included with this distribution.
- XX--
- XX-- This program is distributed in the hope that it will be useful,
- XX-- but WITHOUT ANY WARRANTY; without even the implied warrant of
- XX-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XX-- GNU General Public License for more details.
- XX--
- XX-- You should have received a copy of the GNU General Public License
- XX-- along with this program; if not, write to the Free Software
- XX-- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- XX--
- XX-- LOG
- XX-- $Log: arlib.c,v $
- XX * Revision 1.1 90/10/06 12:06:53 dvadura
- XX * dmake Release, Version 3.6
- XX *
- XX*/
- XX
- XX#include "extern.h"
- XX#include "sysintf.h"
- XX#include <ar.h>
- XX#include <stdio.h>
- XX
- XX/* By defining the defines below it is possible to configure the library
- XX * code for library cacheing/non-cacheing, ASCII archive headers, and a full
- XX * decode of the ar_hdr fields in the scan_ar function. */
- XX
- XX#define ASCARCH 1 /* ASCII time stored in archive */
- XX#define LC 1 /* Turn on library cacheing */
- XX#define DECODE_ALL_AR_FIELDS 0 /* decode only fields make needs*/
- XX
- XX#if LC
- XX# define FOUND_MEMBER FALSE
- XX#else
- XX# define FOUND_MEMBER TRUE
- XX# define _cache_member(a, b, c)
- XX# define _check_cache(a, b, c, d) FALSE
- XX#endif
- XX
- XX#define MAXFNAME 32 /* Longest file name in archive */
- XX#define MAXMNAME 8 /* Max module name < MAXFNAME */
- XX
- XX
- XX/* This struct is used to pass the library and member information about the
- XX * routines that perform the library seeking/cacheing */
- XXstruct ar_args {
- XX char *lib;
- XX char *member;
- XX time_t time;
- XX};
- XX
- XX
- XXtypedef struct AR {
- XX char ar_name[MAXFNAME+1]; /* File name */
- XX long ar_size; /* Size in bytes */
- XX time_t ar_time; /* Modification time */
- XX
- XX#ifdef DOS
- XX char ar_modname[MAXMNAME+1]; /* DOS module name */
- XX#endif
- XX
- XX#if DECODE_ALL_AR_FIELDS
- XX uint16 ar_mode; /* File mode */
- XX uint16 ar_uid; /* File owner */
- XX uint16 ar_gid; /* File group owner */
- XX#endif
- XX} AR, *ARPTR;
- XX
- XX
- XXstatic int ar_scan ANSI((FILE *,
- XX int (*) ANSI((FILE *, struct AR *, struct ar_args *)),
- XX struct ar_args *));
- XXstatic int ar_touch ANSI(( FILE *, time_t ));
- XXstatic int time_function ANSI(( FILE *, struct AR *, struct ar_args * ));
- XXstatic int touch_function ANSI(( FILE *, struct AR *, struct ar_args * ));
- XX
- XX#if LC
- XXstatic int _cache_member ANSI((char *, char *, time_t));
- XXstatic int _check_cache ANSI((char *, char *, time_t *, int));
- XX#endif
- XX
- XX/* decoded archive header */
- XXstatic AR _ar;
- XX
- XX
- XXtime_t
- XXseek_arch(name, lib)/*
- XX======================
- XX Look for module 'name' inside 'lib'. If compiled with cacheing then first
- XX check to see if the specified lib is cached. If so then return that time
- XX stamp instead of looking into the library. */
- XXchar *name;
- XXchar *lib;
- XX{
- XX FILE *f;
- XX int rv;
- XX time_t mtime;
- XX struct ar_args args;
- XX
- XX /* Check the cache first (if there is a cache) */
- XX if( _check_cache(name, lib, &mtime, FALSE) ) return( mtime );
- XX
- XX /* Open the lib file and perform the scan of the members, looking
- XX * for our particular member. If cacheing is enabled it will be
- XX * taken care of automatically during the scan. */
- XX
- XX args.lib = lib;
- XX args.member = name;
- XX args.time = (time_t)0L;
- XX
- XX if( (f = fopen(lib, "rb")) == NIL(FILE) ) return( (time_t)0L );
- XX rv = ar_scan(f, time_function, &args );
- XX fclose( f );
- XX
- XX if( rv < 0 ) Fatal("(%s): Invalid library format", lib);
- XX
- XX return( args.time );
- XX}
- XX
- XX
- XXint
- XXtouch_arch(name, lib)/*
- XX=======================
- XX Look for module 'name' inside 'lib'. If compiled with cacheing then first
- XX check to see if the specified lib is cached. If so then set that time
- XX stamp and write it into the library. Returns 0 on success, non-zero
- XX on failure. */
- XXchar *name;
- XXchar *lib;
- XX{
- XX FILE *f;
- XX int rv;
- XX struct ar_args args;
- XX
- XX /* Open the lib file and perform the scan of the members, looking
- XX * for our particular member. If cacheing is enabled it will be
- XX * taken care of automatically during the scan. */
- XX
- XX args.lib = lib;
- XX args.member = name;
- XX args.time = (time_t)0L;
- XX
- XX if( (f = fopen(lib, "rb+")) == NIL(FILE) ) return( (time_t)1L );
- XX rv = ar_scan(f, touch_function, &args );
- XX fclose( f );
- XX
- XX if( rv < 0 ) Fatal("(%s): Invalid library format", lib);
- XX
- XX return( 0 );
- XX}
- XX
- XX
- XX
- XXstatic int
- XXtime_function(f, arp, argp)/*
- XX=============================
- XX get library member's time, if it matches than return it in argp, if
- XX cacheing is enabled than cache the library members also. */
- XXFILE *f; /* library file */
- XXstruct AR *arp; /* library member header */
- XXstruct ar_args *argp;
- XX{
- XX int rv = _cache_member( arp->ar_name, argp->lib, arp->ar_time );
- XX
- XX if( strcmp(argp->member, arp->ar_name) == 0 ) {
- XX argp->time = arp->ar_time;
- XX
- XX if( arp->ar_time == 0 && !(Glob_attr & A_SILENT) )
- XX Warning( "(%s): Can't extract library member timestamp; using EPOCH",
- XX argp->member);
- XX
- XX return( rv ); /* 1 => no cacheing, 0 => cacheing */
- XX }
- XX
- XX return( FALSE ); /* continue scan */
- XX}
- XX
- XX
- XX
- XXstatic int
- XXtouch_function(f, arp, argp)/*
- XX==============================
- XX Update library member's time stamp, and write new time value into cache
- XX if required. */
- XXFILE *f; /* library file */
- XXstruct AR *arp; /* library member header */
- XXstruct ar_args *argp;
- XX{
- XX extern time_t time ANSI(( time_t * ));
- XX time_t now = time((time_t*) NULL); /* Current time. */
- XX
- XX if( strcmp(argp->member, arp->ar_name) == 0 ) {
- XX _check_cache( argp->member, argp->lib, &now, TRUE );
- XX ar_touch(f, now );
- XX
- XX return( TRUE );
- XX }
- XX
- XX return( FALSE ); /* continue scan */
- XX}
- XX
- XX
- XX
- XX
- XXstatic int
- XXar_scan(f, function, arg)/*
- XX===========================
- XX Scan the opened archive, and call the given function for each member found.
- XX The function will be called with the file positioned at the beginning of
- XX the member and it can read up to arp->ar_size bytes of the archive member.
- XX If the function returns 1, we stop and return 1. We return 0 at the end
- XX of the archive, or -1 if the archive has invalid format. This interface
- XX is more general than required by "make", but it can be used by other
- XX utilities. */
- XXregister FILE *f;
- XXint (*function) ANSI((FILE *, struct AR *, struct ar_args *));
- XXstruct ar_args *arg;
- XX{
- XX extern long atol ANSI((char *));
- XX register char *p;
- XX struct ar_hdr arhdr; /* external archive header */
- XX off_t offset; /* member seek offset */
- XX
- XX#if ASCARCH
- XX char magic[SARMAG];
- XX#else
- XX unsigned short word;
- XX#endif
- XX
- XX fseek( f, 0L, 0 ); /* Start at the beginning of the archive file */
- XX
- XX#if ASCARCH
- XX fread( magic, sizeof(magic), 1, f );
- XX if( strncmp(magic, ARMAG, SARMAG) != 0 ) return( -1 );
- XX#else
- XX fread( (char*)&word, sizeof(word), 1, f );
- XX if( word != ARMAG ) return( -1 );
- XX#endif
- XX
- XX /* scan the library, calling `function' for each member
- XX */
- XX while( 1 ) {
- XX if( fread((char*) &arhdr, sizeof(arhdr), 1, f) != 1 ) break;
- XX offset = ftell(f);
- XX strncpy(_ar.ar_name, arhdr.ar_name, sizeof(arhdr.ar_name));
- XX
- XX for( p = &_ar.ar_name[sizeof(arhdr.ar_name)];
- XX --p >= _ar.ar_name && *p == ' ';);
- XX
- XX p[1] = '\0';
- XX if( *p == '/' ) *p = 0; /* Only SysV has trailing '/' */
- XX
- XX#if ASCARCH
- XX if( strncmp(arhdr.ar_fmag, ARFMAG, sizeof(arhdr.ar_fmag)) != 0 )
- XX return( -1 );
- XX _ar.ar_time = atol(arhdr.ar_date);
- XX _ar.ar_size = atol(arhdr.ar_size);
- XX#else
- XX _ar.ar_time = arhdr.ar_date;
- XX _ar.ar_size = arhdr.ar_size;
- XX#endif
- XX
- XX
- XX#if DECODE_ALL_AR_FIELDS
- XX#if ASCARCH
- XX _ar.ar_mode = atoi(arhdr.ar_mode);
- XX _ar.ar_uid = atoi(arhdr.ar_uid);
- XX _ar.ar_gid = atoi(arhdr.ar_gid);
- XX#else
- XX _ar.ar_mode = arhdr.ar_mode;
- XX _ar.ar_size = arhdr.ar_size;
- XX _ar.ar_uid = arhdr.ar_uid;
- XX _ar.ar_gid = arhdr.ar_gid;
- XX#endif
- XX#endif
- XX
- XX if( (*function)(f, &_ar, arg) ) return( 1 );
- XX fseek( f, offset + (_ar.ar_size+1 & ~1L), 0 );
- XX }
- XX
- XX if( !feof(f) ) return( -1 );
- XX return 0;
- XX}
- XX
- XX
- XX
- XXstatic int
- XXar_touch( f, now )/*
- XX====================
- XX touch module header timestamp. */
- XXFILE *f;
- XXtime_t now;
- SHAR_EOF
- echo "End of part 1, continue with part 2"
- echo "2" > s2_seq_.tmp
- exit 0
-
-